/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.secretaria.saude.negocio.impl;

import com.secretaria.saude.dominio.ProcedimentoTabWin;
import com.secretaria.saude.negocio.ProcedimentoTabWinService;
import com.secretaria.saude.negocio.base.impl.DefaultServiceImpl;
import java.util.Collection;
import java.util.List;
import javax.persistence.EntityManager;

/**
 *
 * @author pablo
 */
public class ProcedimentoTabWinServiceImpl extends DefaultServiceImpl<ProcedimentoTabWin, Long> implements ProcedimentoTabWinService {
    
    public ProcedimentoTabWinServiceImpl(EntityManager em) {
        super(em, ProcedimentoTabWin.class);
    }

    @Override
    public void salvarProcedimentos(Collection<ProcedimentoTabWin> procedimentos) {
        for (ProcedimentoTabWin procedimentoTabWin : procedimentos) {
            persist(procedimentoTabWin);
        }
    }

    @Override
    public List<ProcedimentoTabWin> find(String codigo, String descricao) {
        String queryString = " FROM ProcedimentoTabWin p where 1 = 1 ";
        if(codigo != null && !codigo.isEmpty()) {
            queryString += " and p.codigo = :codigo ";
        }
        if(descricao != null && !descricao.isEmpty()) {
            queryString += " and p.nome like :descricao ";
        }

        javax.persistence.Query query = entityManager.createQuery(queryString);
        if(codigo != null && !codigo.isEmpty()) {
            query.setParameter("codigo", Long.parseLong(codigo.toUpperCase()) );
        }
        if(descricao != null && !descricao.isEmpty()) {
            query.setParameter("descricao", "%" + descricao.toUpperCase() + "%");
        }
        
        List<ProcedimentoTabWin> lista = query.getResultList();
        return lista;
    }

    @Override
    public ProcedimentoTabWin findByCodigo(Long codigo) {
        
        String queryString = " FROM ProcedimentoTabWin p where p.codigo = :codigo ";
        javax.persistence.Query query = entityManager.createQuery(queryString);
        query.setParameter("codigo", codigo);
        List<ProcedimentoTabWin> lista = query.getResultList();
        if(lista.size() > 0) {
            return lista.get(0);
        } else {
            return null;
        }
    }
    
}
